package leetcode.L500;

import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.List;
import java.util.Queue;

public class EX116 {
    public Node connect(Node root) {
        Queue<Node> queue = new ArrayDeque<>();
        if (root!=null){
            queue.add(root);
        }

        while(queue.size()>0){
            List<Node> list = new ArrayList<>();
            int n = queue.size();
            for (int i = 0; i < n; i++) {
                Node node = queue.poll();
                list.add(node);
                if(node.left!=null){
                    queue.add(node.left);
                }
                if(node.right!=null){
                    queue.add(node.right);
                }
            }

            for(int i = 0;i<list.size()-1;i++){
                list.get(i).next = list.get(i+1);
            }
            list.get(list.size()).next = null;
        }
        return root;
    }

}
